import store from '@/store'

// 需要登录才能访问的页面
const loginPages = [
	'/pages/publish-detail/publish-task/publish-task',
	'/pages/publish-detail/publish-qa/publish-qa',
	'/pages/tabbar/user/user',
	'/pages/user/edit',
	'/pages/user/password'
]

// 检查是否需要登录
export function checkNeedLogin(url) {
	// 不需要登录的页面
	const whiteList = [
		'/pages/login/login',
		'/pages/register/register'
	];
	return !whiteList.includes(url);
}

// 检查是否已登录
export function checkIsLogin() {
	return !!uni.getStorageSync('token');
}

// 跳转到登录页面
export function goToLogin() {
	uni.reLaunch({
		url: '/pages/login/login'
	});
}

// 请求拦截器
export function requestInterceptor(options) {
	// 如果请求头指定不需要token，则不添加token
	if (options.header && options.header.isToken === false) {
		delete options.header.isToken
		return options
	}
	
	const token = uni.getStorageSync('token')
	if (token) {
		options.header = {
			...options.header,
			'Authorization': `Bearer ${token}`
		}
	}
	return options
}

// 响应拦截器
export function responseInterceptor(res) {
	// 处理401错误
	if (res.statusCode === 401 || (res.data && res.data.code === 401)) {
		// 显示提示
		uni.showToast({
			title: '登录已过期，请重新登录',
			icon: 'none',
			duration: 2000
		});
		// 清除本地存储的token和用户信息
		uni.removeStorageSync('token');
		uni.removeStorageSync('userInfo');
		// 延迟跳转到登录页面
		setTimeout(() => {
			uni.reLaunch({
				url: '/pages/login/login'
			});
		}, 2000);
		return false;
	}
	return true;
} 